<? 
/*** router.php 

	Роутер хостов для SiteComfort CMS на локальном Денвере
	Позволяет использовать одну систему для нескольких сайтов, и таким образом работать над совершенствованием системы, не дублируя её файлы.
	
	Использование:
	(пример для дополнительных сайтов site1 & site2)
	
	1) Поместите этот файл router.php в директорию, которая на уровень выше чем корневая директория системы (/home/sitecomfort).  
	
	2) Также поместите туда файл .htaccess с двумя директивами:
	
	#dnwr_host site1 www.site1 site2 www.site2
	php_value auto_prepend_file "/home/sitecomfort/router.php"
	
		1я директива задаем хосты алиасы для денвера, 2я директива подключает роутер перед любым запрошенным файлом
	
	3) Для дополительных сайтов создайте в Денвере папки, не совпадающие с их хостами (например можно приписать к хосту '-site') - создаем директории сайтов '/home/site1-site' & '/home/site2-site' В этих папках должны быть папки data & themes - с данными и дизайном сайтов
	
	4) Пропишите в файле router.php пути к сайтам в массиве $path (ниже).
	5) Перезапустите Денвер.

	Все! Теперь при обращении к локальному сайту http://site1/...  буду использоваться файлы данных из папки /home/site1/www/data/  и файлы системы из папки /home/sitecomfort/www/system/...
	
***/

// путь к home-директрии Денвера
$HOME_DIR =  '/home';

// пути к корневым директориям сайтов (содержат data & themes)
$path = array(
	'shunudag' 	 => $HOME_DIR.'/shunudag-site/www',
	'dagkultura' =>	$HOME_DIR.'/dagkultura-site/www',
);

// путь к корневой директории системы Sitecomfort CMS
define('SYSTEM_ROOT',  $HOME_DIR.'/sitecomfort/www');


// вычисляем нормализованный (урезанный) хост
$HTTP_HOST = str_replace( array('^www.','^'), '', '^'.getenv('HTTP_HOST'));

// если хост распознан - подменяем константы и перенаправляем обращения к статическим файлам  
if (isset($path[$HTTP_HOST]))
{
	// определяем корневую директорию с данными сайта
	define('SITE_ROOT',	$path[$HTTP_HOST]);
	$_SERVER['DOCUMENT_ROOT'] = SITE_ROOT;
	$_SERVER['DOCUMENT_ROOT2'] = SYSTEM_ROOT;

	// вычисляем, какой запрошен файл
	list($REQUEST_FILE) = explode('?', $_SERVER['REQUEST_URI'].'?');
	$file_ext = strtolower(substr(strrchr(basename($REQUEST_FILE), '.'),1));
	
	// если запрошена директория - запрашиваем индексный файл
	if (!$file_ext) 
	{
		$REQUEST_FILE = '/index.php'; 
		$file_ext='php';
	}
	
	// ищем файл сначала в директории сайта, и затем в директории системы
	if (file_exists($f = SITE_ROOT.$REQUEST_FILE))
		$REQUEST_FILE = $f;
	else 
	if (file_exists($f = SYSTEM_ROOT.$REQUEST_FILE))
		$REQUEST_FILE = $f;
	else 
	{
		header("HTTP/1.1 404 Not Found"); 
		exit;
	}
	
	
	
	// exit($REQUEST_FILE);
	// exit((string)file_exists($REQUEST_FILE));
	// exit($file_ext);
	
	if (!file_exists($REQUEST_FILE))
	{
		header("HTTP/1.1 404 Not Found"); exit;
	}
	else 
	// если это php скрипт - подключаем его
	if ($file_ext=='php') 
	{
		include($REQUEST_FILE);
	}
	else 
	{
		$ctype = array_search($file_ext, 
			array_flip(array(
			"pdf"	=> "application/pdf",
			"exe"	=> "application/octet-stream",
			"zip"	=> "application/zip",
			"rar"	=> "application/rar",
			"doc"	=> "application/msword",
			"xls"	=> "application/vnd.ms-excel", //application/x-msexcel
			"ppt"	=> "application/vnd.ms-powerpoint",
			"gif"	=> "image/gif",
			"png"	=> "image/png",
			"jpeg"	=> "image/jpg",
			"jpg"	=> "image/jpg",
			"jpe"	=> "image/jpg",
			
			"wma"	=>	"audio/x-ms-wma",
			"mp3"	=>	"audio/mpeg",
			"wav"	=>	"audio/x-wav",
			"mpeg"	=>	"video/mpeg",
			"mpg"	=>	"video/mpeg",
			"mpe"	=>	"video/mpeg",
			"mov"	=>	"video/quicktime",
			"avi"	=>	"video/x-msvideo",
			"wmv"	=>	"video/x-ms-wmv",
			
			"htm"	=>	"text/html", //text/html; charset=utf-8'
			"html"	=>	"text/html",
			"txt"	=>	"text/plain",
			"log"	=>	"text/plain",
			"css"	=>	"text/css",
			"js"	=>	"application/x-javascript",
			"rss"	=>	"text/xml",
			"xml"	=>	"text/xml",
			
			//"default"	=> "application/octet-stream"
			//"default"	=> "application/force-download",  // application/download"); //application/x-download
   

		)));
		
		header("Content-Type: ");
		
		if (!empty($ctype)) 
			header("Content-Type: $ctype");
		
		
		header("Content-Length: ". (string)(@filesize($REQUEST_FILE)));
	
		readfile($REQUEST_FILE);
		
	}
	exit;
	
	
	
}
